1. Technical Field
The present invention relates in general to a toggle for the split transaction mode of a PCI-X bridge buffer and in particular to a toggle for switching the split transaction mode between a xe2x80x9cNo Over-commitmentxe2x80x9d Mode and an xe2x80x9cOver-Commitmentxe2x80x9d Mode or a xe2x80x9cFloodxe2x80x9d Mode for split read transactions across a PCI-X to PCI-X (PtP) bridge. Still more particularly, the present invention relates to toggling and switching the split transaction mode of the PCI-X bridge buffer so that retries and disconnects are generally minimized by the PCI-X bridge and bus efficiency and overall system performance is thus improved.
2. Description of the Related Art
Peripheral Component Interconnect-X (PCI-X) and peripheral component interconnect (PCI) specifications have been developed and continued to be improved for communicating between a host computer and various devices or adapters, such as devices on the bus, plug-in cards, or integrated adapters. The specifications for PCI have been detailed in PCI specification version 2.2 (66 MHz capability) published in December 1998 and PCI specification version x.x (133 MHz capability that will be published some time after development of the PCI-X enhancements have been completed and approved. These specifications are incorporated by reference herein.
Various transactions, such as input/output (I/O) transactions, occur across the PCI-X or PCI bridge between the host computer and the various devices. Delay transactions across such bridges require retries by the host bridge until the appropriate amount of buffer space is readily available. However, the problem with delay transactions (described in the current PCI specification) is that the host bridge has to continue to retry and wait until appropriate buffers are available-which results in the tie up or back up of transactions across the host bridge. Split transactions (supported by the PCI-X enhancements) across such bridges avoids having the host bridge wait and retry transactions and allows commands to be processed based on commands by the master.
The PCI-X bus specification allows for three different modes for managing split transactions for a PCI-X to PCI-X (PtP) bridge. These modes are a xe2x80x9cNo Over-commitmentxe2x80x9d Mode, an xe2x80x9cOver-Commitmentxe2x80x9d Mode, and a xe2x80x9cFloodxe2x80x9d Mode. Generally, the upstream (bus transactions going towards system memory) and downstream (bus transactions going towards an I/O device) split transaction control registers each have two types of fields for controlling the forwarding of split requests. The two types of fields are Split Completion Capacity fields and a Split-Transaction Commitment Limit fields. A Split Completion Capacity field indicates the amount of space in the buffers that the bridge has available for storing split completions. A Split Transaction Commitment Limit field indicate the number of Split Transactions that the bridge is permitted to have outstanding at one time (in units of ADQs, which are each a data block of 128 bytes). If the bridge is configured to store Split Read Completions separately from Split Write Completions, then the Split Transaction Commitment Limit field applies only to split read requests. On the other hand, if the bridge is configured to store Split Read Completions with Split Write Completions, then the Split Transaction Commitment field applies to all split transactions.
The xe2x80x9cNo Over-commitmentxe2x80x9d mode occurs when the Split Transaction Commitment Limit field is equated to the same value as the Split Transaction Capacity field. Typically, the Split Transaction Commitment Limit field is defaulted at this value. At this setting value, the bridge forwards Split Completions which identically fill and occupy the bridge buffers. For example, the bridge is unable to issue a split read request unless the bridge has available the full amount of buffer space that would be able to accept the entire read completion in one bus operation. The xe2x80x9cOver-commitmentxe2x80x9d mode occurs when the Split Transaction Commitment Limit field is programmed to a value greater than the value of the Split Transaction Capacity field. In this situation, the bridge is able to forward more Split Transactions (in unit of ADQs) than its available completion buffer capacity. In other words, the xe2x80x9cOver-commitmentxe2x80x9d mode allows some degree of over-commitment by the bridge of read completion buffers (degree of over-commitment is programmable), wherein throughput of transactions is improved and latency is reduced. The xe2x80x9cFloodxe2x80x9d mode occurs when the Split Transaction Commitment Limit field allows the bridge to forward all Split Transactions regardless of the size of the transaction or the amount of available buffer space in the bridge. In other words, the xe2x80x9cFloodxe2x80x9d mode allows the bridge to forward all read requests regardless of available buffers.
Therefore, one of the keys for managing transactions across the bridge is to optimize the settings for the split Transaction Commitment Limit fields, which are a function of the number and behavior of devices. If the commitment level for the Split Transaction Commitment Limit field is set to be too large, then Split Completion data returns to the bridge faster than it is able to be forwarded to the requester resulting in the Split Completion backing up towards the completer. On the other hand, if the commitment level for the Split Transaction Commitment Limit field is set to be too small, then Split Requests are unnecessarily delayed and requesters on one side of the bridge experience additional latency when reading from completers on the other side of the bridge.
The problem occurs when the split transaction mode is set to the Over-commitment mode or the Flood mode. When peak traffic occurs on the secondary side of the bridge, the bridge""s read completions buffers become full of completion data which results in any additional read completions in transit above the PtP bridge backing up in the bridge above the PtP bridge and which also results in larger split completions being decomposed into smaller read completions. When the bridge has some available buffers, the bridge will accept part of a split read completion filling the available buffers and then disconnecting. Over-commitment of the buffers in the bridge results in retries and disconnects of the Split Completion transactions occurring more frequently at and tying up the bridge. Thus, bus efficiency and overall system performance are affected.
It would therefore be advantageous and desirable to inhibit the over-commitment of the buffers in the bridges to minimize retries and disconnects at the bridge and increase bus efficiency and overall system performance. It would also be advantageous and desirable to provide a system and method that toggles the split transaction mode to the No Over-commitment mode to stop the bridge from issuing any additional read requests until the bridge is no longer over-committed. It would also be advantageous and desirable to provide a system and method for toggling the split transaction mode from the Over-commitment mode or the Flood mode to the No Over-commitment mode when the peak traffic and backing up of split completions, such as read completions, in transit above the PtP bridge occur. It would be advantageous and desirable to provide a system and method for allowing split completions, such as read completions, to drain out of the bridge until the completion buffers in the bridge are no longer over committed at which time the split transaction mode is toggled back to the Over-commitment mode or the Flood mode.
It is therefore one object of the present invention to inhibit the over-commitment of the buffers in the bridges to minimize retries and disconnects at the bridge and increase bus efficiency and overall system performance.
It is another object of the present invention to provide a system and method that toggles the split transaction mode of a bridge to the No Over-commitment mode to stop the bridge from issuing any additional read requests until the bridge is no longer over-committed.
It is a further object of the present invention to provide a system and method for toggling the split transaction mode from the Over-commitment mode or the Flood mode to the No Over-commitment mode when the peak traffic and backing up of split completions, such as read completions, in transit above the PtP bridge occur.
It is still a further object of the present invention to provide a system and method for allowing split completions, such as read completions, to drain out of the bridge until the completion buffers in the bridge are no longer over committed at which time the split transaction mode is toggled back to the Over-commitment mode or the Flood mode.
The foregoing objects are achieved as is now described. A system and method for optimally processing split completion transactions across a PCI-X bridge with a PCI-X bridge-buffer. The split transaction mode of the PCI-X bridge buffer is toggled between a No Over-commit made and an over-commit mode. Over-commitment of the buffer is inhibited when the split transaction mode is toggled to the No Over-commit mode and when the buffer is over committed by the bridge. At least some over-commitment of the buffer is allowed by the bridge when the split transaction mode is toggled to the over-commit mode and when the buffer is not over committed by the bridge. The over-commit mode may be an Over-commitment mode or a Flood mode. The Over-commitment mode allows some degree of over commitment of the buffer by the bridge while the Flood mode allows the bridge to forward all split request transactions regardless of size of the transactions or amount of available space in the buffer when the Over-commit mode is in a Flood mode. The split request transaction is controlled and forwarded based on the toggled split transaction mode. The system comprises at least a toggle switch and a control system. The split transaction mode is toggled to or maintained at a particular mode based on whether a retry or disconnect of the split completion transaction by the PCI-X bridge has or has not occurred and whether the buffer is or is not over committed.
The above as well as additional objects, features, and advantages of the present invention will become apparent in the following detailed written description.
The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself however, as well as a preferred mode of use, further objects and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
FIG. 1 is a flow chart of an algorithm for toggling or switching the split transaction mode of a PCI-X to PCI-X (PtP) bridge buffer between a xe2x80x9cNo Over-commitmentxe2x80x9d Mode and an xe2x80x9cOver-Commitmentxe2x80x9d Mode or a xe2x80x9cFloodxe2x80x9d Mode for split transactions across the bridge; and
FIG. 2 is a block diagram of a system for toggling or switching the split transaction mode of a PCI-X to PCI-X (PtP) bridge buffer between a xe2x80x9cNo Over-commitmentxe2x80x9d Mode and an xe2x80x9cOver-Commitmentxe2x80x9d Mode or a xe2x80x9cFloodxe2x80x9d Mode for split transactions across the bridge.